package zeno.project.springboot.controller.core;

import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.*;
import zeno.project.springboot.entity.base.JsonResult;
import zeno.project.springboot.entity.base.PageQueryResult;

/**
 * @author ZhiYong
 * @ClassName AccountController.java
 * @Description 账户管理
 * @createTime 2021/04/21 22:05:00
 */
@RestController
@Api(value = "账户管理")
@RequestMapping(value = "/account")
public class AccountController {
    /**
     * 新增账户
     * 不设置密码则默认为123456
     */
    @PostMapping("/add")
    @ApiOperation("新增账户")
    public JsonResult<Object> createAccount() {
        return new JsonResult<>(null);
    }

    /**
     * 修改账户
     */
    @PutMapping("/update")
    @ApiOperation("修改账户")
    public JsonResult<Object> updateAccount() {
        return new JsonResult<>(null);
    }

    /**
     * 删除账户
     * 系统root账户不可删除
     * 不可删除当前用户
     */
    @DeleteMapping("/delete")
    @ApiOperation("删除账户")
    public JsonResult<Object> deleteAccount() {
        return new JsonResult<>(null);
    }

    /**
     * 分页查询账户
     */
    @GetMapping("/pageQuery")
    @ApiOperation("分页查询账户")
    public JsonResult<PageQueryResult> pageQuery() {
        return new JsonResult<>(new PageQueryResult());
    }

    /**
     * 根据id查询账户
     */
    @GetMapping("/{id}")
    @ApiOperation("根据id查询账户")
    public JsonResult<Object> findById(@PathVariable("id") Integer id) {
        return new JsonResult<>(id);
    }

    /**
     * 判断account唯一性
     * true-已存在，false-不存在
     */
    @GetMapping("/checkUniqueness")
    @ApiOperation("判断account唯一性")
    public JsonResult<Object> checkUniqueness() {
        return new JsonResult<>(null);
    }

    /**
     * 重置密码
     */
    @PutMapping("/resetPassword")
    @ApiOperation("重置密码")
    public JsonResult<Object> resetPassword() {
        return new JsonResult<>(null);
    }

    /**
     * 修改密码
     * 使用原密码、新密码、重复新密码进行修改密码
     */
    @PutMapping("/updatePassword")
    @ApiOperation("修改密码")
    public JsonResult<Object> updatePassword() {
        return new JsonResult<>(null);
    }

    /**
     * 批量导入账户信息
     * account、username，默认密码123456
     * 若包含已存在的账户则跳过，返回导入失败的账户信息
     */
    @PostMapping("/batchImport")
    @ApiOperation("批量导入账户信息")
    public JsonResult<Object> batchImport() {
        return new JsonResult<>(null);
    }

}
